package javase1.day11.demo05;
/*
如果接口的实现类（或者父类的子类）只需要使用唯一的一次
那么这种情况下就可以省略该类的定义，改为使用匿名内部类

定义格式：
接口名称 对象名=new 接口名称(){
        @Override
        覆盖重写所有抽象方法

};

注意事项：
1匿名内部类，在【创建对象】时只能使用唯一的一次
如果希望多次创建对象，而且类的内容一样的话，那就必须单独定义实现类了
2匿名对象，在【调用方法】时，只能唯一调用一次
如果希望同一个对象多次掉用方法，就必须给对象起一个名字
3匿名内部类省略了【实现类或子类定义】，但匿名对象省略了【对象名称】，两者不一样



 */
public class MyMain {
    public static void main(String[] args) {
        //多态写法，左父右子
//        MyInterface obj=new MyInterfaceItml();
//        obj.methodAbs();

        //匿名内部类
        MyInterface objA=new MyInterface() {
            @Override
            public void methodAbs() {
                System.out.println("不用创建实现类对象，直接使用匿名内部类覆盖重写接口抽象方法");
            }
        };
        objA.methodAbs();
        new MyInterface() {
            @Override
            public void methodAbs() {
                System.out.println("匿名内部类在创建对象时只能使用唯一的一次，并且使用匿名对象省略对象名称");
            }
        }.methodAbs();
    }
}
